// pages/consultDetail/consultDetail.js
import { getMessageList,createChatRecord } from '../../api/myMsg'
Page({
  /**
   * 页面的初始数据
   */
  data: {
    caseId: '',
    chatMessages: [],
    inputMessage: '',
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const { caseId } = options
    console.log('📱 咨询详情页面加载，caseId:', caseId)
    
    if (caseId) {
      this.setData({ caseId })
      this.loadChatMessages(caseId)
    }
  },

  /**
   * 加载聊天消息
   */
  async loadChatMessages(caseId) {
    try {
      console.log('📡 加载聊天消息，caseId:', caseId)
      
      // 这里调用API获取聊天记录
      const res = await getMessageList(caseId)
      console.log('📨 接口返回的消息列表:', res.list)
      
      // 处理消息数据，根据 senderType 分类
      const processedMessages = this.processChatMessages(res.list)
      
      this.setData({
        chatMessages: processedMessages
      })
      
      // 滚动到底部
      setTimeout(() => {
        this.scrollToBottom()
      }, 500)
      
    } catch (error) {
      console.error('❌ 加载聊天消息失败:', error)
    }
  },

  /**
   * 处理聊天消息数据
   */
  processChatMessages(messages) {
    if (!messages || !Array.isArray(messages)) {
      return []
    }
    
    // 按时间排序（如果需要）
    const sortedMessages = messages.sort((a, b) => a.sendTime - b.sendTime)
    
    return sortedMessages.map(msg => {
      return {
        ...msg,
        // 保留原始字段，便于模板中使用
        senderType: msg.senderType,
        sender: msg.sender,
        content: msg.content,
        sendTime: msg.sendTime,
        chatId: msg.chatId
      }
    })
  },

  /**
   * 格式化时间戳
   */
  formatTime(timestamp) {
    if (!timestamp) return ''
    
    const date = new Date(parseInt(timestamp))
    const now = new Date()
    const today = new Date(now.getFullYear(), now.getMonth(), now.getDate())
    const messageDate = new Date(date.getFullYear(), date.getMonth(), date.getDate())
    
    // 如果是今天，只显示时间
    if (messageDate.getTime() === today.getTime()) {
      return date.toLocaleTimeString('zh-CN', { 
        hour: '2-digit', 
        minute: '2-digit' 
      })
    } else {
      // 如果是其他日期，显示日期和时间
      return date.toLocaleDateString('zh-CN', { 
        month: '2-digit',
        day: '2-digit'
      }) + ' ' + date.toLocaleTimeString('zh-CN', { 
        hour: '2-digit', 
        minute: '2-digit' 
      })
    }
  },

  onInputMessage(e) {
    const value = e.detail.value;
    console.log('输入的值:', value);
    this.setData({
      inputMessage: value
    }, () => {
      console.log('更新后的数据:', this.data.inputMessage);
    });
  },

  /**
   * 发送消息
   */
  sendMessage() {
    const { inputMessage, caseId } = this.data
    if (!inputMessage.trim()) {
      wx.showToast({
        title: '请输入消息',
        icon: 'none'
      })
      return
    }

    // 创建新的学生消息
    const studentInfo = wx.getStorageSync('studentInfo');
    const sender = studentInfo ? studentInfo.studentName : null;
    const senderId = studentInfo? studentInfo.id:null;
    const newMessage = {
      // chatId: Date.now(),
      caseId: caseId,
      content: inputMessage,
      sendTime: Date.now(),
      sender: sender, // 这里应该是当前登录用户的姓名
      senderId: senderId, // 这里应该是当前登录用户的ID
      senderType: '学生'
    }

    this.setData({
      chatMessages: [...this.data.chatMessages, newMessage],
      inputMessage: ''
    })

    // 滚动到底部
    setTimeout(() => {
      this.scrollToBottom()
    }, 100)

    // 调用发送消息API
    this.sendMessageToServer(inputMessage, caseId,sender,senderId)
  },

  /**
   * 发送消息到服务器
   */
  async sendMessageToServer(content, caseId,sender,senderId) {
    try {
      console.log('📤 发送消息到服务器:', { caseId, content,sender,senderId })
      
      const messageData = {
        caseId: caseId,
        sender: sender,
        senderType: '学生', // 1: 学生, 2: 老师
        senderId: senderId,
        content: content,
        sendTime: Date.now()
      }
      
      console.log('📤 发送消息数据:', messageData)
      
      const res = await createChatRecord(messageData)
      console.log('✅ 发送消息响应:', res)
      
    } catch (error) {
      console.error('❌ 发送消息失败:', error)
      // this.updateMessageStatus(false)
      wx.showToast({
        title: '发送失败: ' + (error.message || '网络错误'),
        icon: 'none',
        duration: 2000
      })
    }
  },

  /**
   * 模拟咨询师回复
   */
  simulateReply() {
    setTimeout(() => {
      const replies = [
        '我理解你的感受，能具体说说吗？',
        '这是一个很好的问题，我们可以从几个方面来分析',
        '感谢分享，这对我们的咨询很有帮助',
        '让我们一起来制定一个改善计划',
        '你的感受很重要，我们可以深入探讨这个问题'
      ]
      const randomReply = replies[Math.floor(Math.random() * replies.length)]
      
      const replyMessage = {
        chatId: Date.now() + 1,
        caseId: this.data.caseId,
        content: randomReply,
        sendTime: Date.now(),
        sender: '李咨询师',
        senderId: 1,
        senderType: '老师'
      }

      this.setData({
        chatMessages: [...this.data.chatMessages, replyMessage]
      })

      // 滚动到底部
      this.scrollToBottom()
    }, 2000)
  },

  /**
   * 滚动到底部
   */
  scrollToBottom() {
    setTimeout(() => {
      wx.pageScrollTo({
        scrollTop: 99999,
        duration: 300
      })
    }, 100)
  },
})